スペアナ制御用のマイコンは、入手が容易になったA/D変換機能を搭載したPICシリーズや、AKI−H8が中心になると思います。
さて、スペアナ制御ということですが、大きく分けると3つになると思います。
(1)周波数制御-----スペアナの帯域周波数を掃引する。
制御対象は主にPLL回路、DDS回路
(2)信号検出制御---スペアナ検出信号のA/D変換動作
(3)通信制御-------パソコンとのデータ通信、液晶表示器とのデータ通信
ここでは、(1)周波数制御について解説していきます。
マイコンによる・周波数制御(PLL周波数シンセサイザ編)
マイコンによる周波数制御は、一般にPLL回路が中心になりますので、まず、「PLL回路とは何?」から始まります。PLL(Phase Locked Loop)は無線通信機、標準信号発生器、モータ制御などの分野で多く応用されていて、広い意味での可変周波数発振器として考えることができます。現在では、1チップ化されたLSIが各社から販売されています。
PLL回路の最も基本的な構成は、図1のようになっており、特徴は帰還ループを構成していることです。
基本ブロックは
などで構成されています。
高い周波数のVCOを使ったPLL回路では、N分周器のカウント速度が間に合わないため、プリスケーラと呼ばれる固定の分周器を入れる場合や、パルス・スワロ方式といって、ループ内に2系統のプリスケーラを付加した方式が使われています。
![]() |
図1.PLL回路の基本ブロック図 |
まず、基準発振器では12.8MHzの水晶発振器が使われています。このとき1/1280に分周器(プログラマブル・リファレンス・カウンタともいう)が設定されたとすると、基準の発振周波数fsは10kHzになります。ところで、VCOで発振した局発信号foは、1/N分周器(プログラマブル・カウンタともいう)で1/Nに分周されます。その結果として取り出されたVCOの出力の一部(ここでは10kHz)と水晶発振器から得られた正確な10kHzの信号とが位相比較器で精密に比べられます。ここで、もし誤差があれば、それをなくすように位相比較器から電圧レベルの信号がループフィルタを通して出力され、VCOに伝えられます。ループフィルタは帰還ループの応答性を決定する役目をします。VCOはすばやくそれに応答し、正確な周波数の局発信号を作り出します。基準発振器の信号が10kHzですから、VCOから取り出される局発信号出力も10kHz単位になります。多くのPLLが10kHzステップになっているのはこのためなのです。
さて、PLL回路では分周データ(N)の設定で簡単に周波数を変えることができます。周波数データの設定は、すべて電気的にコントロールできるのですから、外部からのPICやH8
、その他のマイコンにより、制御が簡単に自在にできます。
例を上げてPLLの仕組みを、もう少し分かりやすく説明しましょう。
たとえば、1/N分周器の
分周比が1なら----10k×1=10kHz
分周比が2なら----10k×2=20kHz
分周比が3なら----10k×3=30kHz
分周比が10なら---10k×10=100kHz
分周比が100なら--10k×100=1MHz
.....
という具合に、基準発振器出力(ここでは10kHz)を単位として、カウンタのデータNを変えれば10kHzステップで周波数が変えられます。
また、基準発振器の分周比率1/R(ここでは1/1280)もいくつか変えられるようになっていますので、ステップ周波数の制御も可能ですし、さらに水晶発振の周波数を選べばどんな周波数も作れてしまいます。
すなわち、
PLL回路の出力周波数foの設定は、下記の式(1)になります。
(foscは、水晶発振器の周波数)
fo=N×fosc÷R ------ 式(1)
今から、十数年前にはPLL回路は大変難しい技術で、当時の CQ ham radio誌などにもPLLの製作記事いくつか紹介されていますが、かなり高度な技術が必要でした。したがって自作の入門者・初心者には、どうにも手の出しようがありませんでした。しかし、現在では1チップ化されたLSIが各社から販売されていますので、初心者の方でもちょっとしたコツさえ掴めば簡単にできてしまいます。ここでは、1.1GHz対応のプリスケーラ内蔵PLL周波数シンセサイザ富士通製のMB1501を使って、PLLの制御法をマスターしましょう。
![]() |
図2.MB1501 PLL周波数シンセサイザ |
MB1501は秋月電子通商で、数年前まで一個¥300で安価に販売されていたので、このICを選定いたしました。PLL ICは各種出ており、扱える周波数範囲が違っても使い方は同じですので、特にMB1501にこだわる必要性はありません。入手できるもので結構です。ただし使用周波数範囲は1GHz程度までを扱える必要があります。(MB1501は1.1GHzまで対応)
MB1501はパルス・スワロ方式が可能なシリアル入力PLL周波数シンセサイザです。GHzという高い周波数になると1/N分周器(プログラマブル・カウンタ)でカウントすることが難しくなるため、そこで考え出されたのが、プリスケーラを用いてカウント可能周波数まで低くするという方法です。このとき2係数プリスケーラを用いると、結果として総合の分周比はM×N+Aで表されるカウント値になり、これによりトータルとしてプログラマブル分周器の最高入力周波数を高くすることができます。図3にパルス・スワロ方式のブロック図を示します。図1の基本ブロック図と比べると、1/N分周器(プログラマブル・カウンタ)のループ内に2系統のプリスケーラが付加された形になっていることがわかります。
![]() |
図3.パルス・スワロー方式PLL回路のブロック図 |
PLL周波数シンセサイザの制御は、図3のパルス・スワロー方式でみれば、
(1)基準発振器の周波数を決めるリファレンス・カウンタ”R”の設定
(2)プログラマブル・カウンタ”N”の設定
(3)2係数プリスケーラの分周値”M”の設定
(4)スワロー・カウンタ”A”の設定
をマイコンで制御することになります。入力設定はいずれもシリアル入力です。
PLL回路の出力周波数foの設定は、下記の式(2)に従って選定します。
(foscは、水晶発振器の周波数)
fo=[(M×N)+A]×fosc÷R ------ 式(2)
ここで、MB1501の例では、
M:プリスケーラの分周値(64または128)
N:プログラマブル・カウンタ設定値(16〜2047)
A:スワロー・カウンタ設定値(0〜127,A<N,A<M)
R:リファレンスカウンタ設定値(8〜16383)
となっています。
MB1501以外のPLL ICを扱う方は、たぶん設定値の範囲が違っていますが、パルス・スワロー方式であれば、式(2)に従うはずです。
それでは、式(2)を用いて周波数設定の例を考えてみましょう。
(計算例.1) fo=543.210MHzの局部発振周波数を得たい時は、どうしたらよいか?
水晶発振器は、安定性を十分考慮し、秋月電子通商で1個200円で入手できる超高精度クリスタルモジュールを使用します。したがって、fosc=12.8MHzとなります。
次に、発振周波数の下桁は10kHzですから、基準発振器の周波数は10kHzということになります。fosc÷R=10kHzより、リファレンスカウンタ設定値がR=1280と求まります。
次にプリスケーラの分周値Mを決めますが、M=64もしくは、M=128のどちらかを選定することになります。
(1)まずM=64と仮定すると、
fo=[64×N+A]×10kHz=543.210MHzより、
N=848,A=49と求まります。
(2)ところで、M=128と仮定すると、
fo=[128×N+A]×10kHz=543.210MHzより、
N=424,A=49と求まります。
したがって、この場合には同一周波数において2通りの設定方法があります。
(計算例.2) fo=210.456MHzの局部発振周波数を得たい時は、どうしたらよいか?
同様に超高精度クリスタルモジュールfosc=12.8MHzを使用した場合、発振周波数の下桁は6kHzですから、基準発振器の周波数は1kHzということになります。fosc÷R=1kHzより、リファレンスカウンタ設定値がR=12800と求まります。リファレンスカウンタRの設定値範囲(8〜16383)内ですのでOKです。
(1)まず、M=64と仮定すると、
fo=[64×N+A]×1kHz=210.456MHzより、
N=3288,A=24と求まりますが、プログラマブル・カウンタNの設定値範囲(16〜2047)をオーバーしてしまいますのでNGです。
(2)次に、M=128と仮定すると、
fo=[128×N+A]×1kHz=210.456MHzより、
N=1644,A=24と求まります。
したがって、このときはM=128のみ設定可能です。
(計算例.3) fo=654.321MHzの局部発振周波数を得たい時は、どうしたらよいか?
fosc=12.8MHz、基準発振器の周波数は1kHzということになりますから、リファレンスカウンタ設定値はR=12800です。
(1)まず、M=64と仮定すると、
fo=[64×N+A]×1kHz=654.321MHzより、
N=10223,A=49と求まりますが、プログラマブル・カウンタNの設定値範囲(16〜2047)をオーバーしてしまいますのでNGです。
(2)一方、M=128とすれば、
fo=[128×N+A]×1kHz=654.321MHzより、
N=5111,A=113と求まりますが、プログラマブル・カウンタNの設定値範囲(16〜2047)をオーバーしてしまいますので、これもNGです。したがって、fo=654.321MHzの設定はできません。基準周波数を低くくするほど、局部発振周波数を高くできなくなることがわかります。これが周波数設定の制限であり、このことをしっかり頭に入れておいてください。
(注)”できません”と言い切ってしまっていますが、MB1501のPLL回路”単体”では設定不可能ということです。DDS回路と組み合わせる工夫により、それを可能にすることができるのです。今後、要チェック!。
さて次に、MB1501の端子配列図を見ていきましょう。MB1501は、図4で見るように16ピンのプラスチックSOPパッケージの表面実装部品です。
![]() |
図4.MB1501端子配列図 |
端子番号 | 端子記号 | I/O | 機 能 説 明 |
1 | OSC IN | I | 水晶振動し接続端子で基準分周器の入力端子 (OSC IN=発振回路入力端子、OSC OUT=発振回路出力端子) |
2 | OSC OUT | O | |
3 | Vp | − | チャージポンプ出力用の電源端子 |
4 | Vcc | − | 電源端子 |
5 | Do | O | 内部チャージポンプの出力端子 PC端子の設定により位相特性が反転 |
6 | GND | − | GND端子 |
7 | LD | O | 位相比較器の出力端子 LD=”H”:ロック時 LD=”L”:frとfpの位相差に相当する期間 |
8 | Fin | I | プリスケーラの入力端子(AC結合を行うこと) |
9 | Clock | I | 19bitシフトレジスタと、16bitシフトレジスタのクロック入力端子 クロックパルスの立ち上がり時にデータを読み込む。 |
10 | Data | I | バイナリ・コードによるシリアルデータ入力端子 データの最後のビットはコントロールビットで、 ”H”レベル時:15bitラッチへデータを送る ”L”レベル時:18bitラッチへデータを送る |
11 | LE | I | ロードイネーブル信号入力端子 LE=”H”(またはオープン)のとき、シリアルデータのコントロールビット との組み合わせによりシフトレジスタの内容をラッチへ送る (プルアップ抵抗付き) |
12 | FC | O | 位相比較器のフェイズ切り替え端子 FC=”L”レベルのとき、チャージポンプ、位相比較器の特性が反転 (プルアップ抵抗付き) |
13 | fr | O | 位相比較器入力モニタ端子 基準分周器の出力に相当 |
14 | fp | O | 位相比較器入力モニタ端子 基準分周器の出力に相当 |
15 | φP | O | 外付けチャージポンプ用位相比較器の出力端子 PC端子の設定により位相特性が反転 *φP端子はN−ch,オープンドレイン出力 |
16 | φR | O |
シリアルデータの入力方法について
シリアルデータ入力は、Data端子,Clock端子,LE端子の3入力で行い、基準分周器と比較分周器をそれぞれ単独にコントロールできます。
シリアルデータは、クロックの立ち上がりで内部のシフトレジスタに順次取り込まれ、ロードイネーブルが[H]レベル(またはオープン)時にコントロールデータとの組み合わせによりラッチに転送されます。すなわち、
コントロールデータ:[H]のとき--->15bitラッチへ転送(M,Rの設定)
コントロールデータ:[L]のとき--->18bitラッチへ転送(N,Aの設定)
(1)プリスケーラ(M)及び、リファレンス・カウンタ(R)の設定法
図5に分周比設定ビットの位置を示します。この設定ビットは、Data端子よりシリアル入力します。
まず最初に入れるビットデータ(SWと書かれた位置)には、プリスケーラ(M)の分周比設定ビットを入力します。このとき2通りの設定がありましたが、M=64のときには、SW=[H]を入力し、あるいはM=128のときには、SW=[L]を入力します。
次にS14からS1までの位置には、リファレンス・カウンタ(R)の分周比設定ビットを入力します。この14ビット分は、表2のようにして、分周比は8〜16383まで設定できます。ただし、分周比8未満の設定は禁止されています。
最後に入れるビット(コントロールビット)は、[H]を入力します。
![]() |
図5.プリスケーラ(M)及びリファレンス・カウンタ(R)の分周比設定ビット位置 |
表2.リファレンス・カウンタ(R)の分周比 |
![]() |
(注)分周比8未満の設定は禁止 |
(2)プログラマブル・カウンタ(N)及び、スワロ・カウンタ(A)の設定法
図6に分周比設定ビットの位置を示します。
S18からS8までの位置には、プログラマブル・カウンタ(N)の分周比設定ビットを入力します。この11ビット分は、表3のようにして、分周比は16〜2047まで設定できます。ただし、分周比16未満の設定は禁止されています。
S7からS1までの位置には、スワロ・カウンタ(A)の分周比設定ビットを入力します。この7ビット分は、表4のようにして、分周比は0〜127まで設定できます。
最後に入れるビット(コントロールビット)は、[L]を入力します。
![]() |
図6.プログラマブル・カウンタ(N)及びスワロ・カウンタ(A)の分周比設定ビット位置 |
表3.プログラマブル・カウンタ(N)の分周比 | 表4.スワロ・カウンタ(A)の分周比 | |
![]() |
![]() |
|
(注)分周比16未満の設定は禁止 |
それでは、上記の設定方法を踏まえて設定入力の例を考えてみましょう。
(設定入力例) fo=543.210MHzの局部発振周波数を得たい時の設定は?
先ほどの(計算例.1)より、(1)M=64と(2)M=128がありますので、2通りの入力設定法を見てみましょう。
(1)M=64のとき
図5より、SW=[H]にします。
次に、リファレンス・カウンタの設定値、R=1280ですが、これを2進数表記(14ビット分)で表すと、00010100000000になります。
1は[H]、0は[L]に対応しますから、それぞれ、S14=[L],S13=[L],S12=[L],S11=[H],S10=[L],S9=[H],S8=[L],S7=[L],S6=[L],S5=[L],S4=[L],S3=[L],S2=[L],S1=[L]となります。最後のコントロールビットは、C=[H]です。
一方、プログラマブル・カウンタの設定値、N=848ですが、これを2進数表記(11ビット分)で表すと、01101010000になります。
従って、図6より、S18=[L],S17=[H],S16=[H],S15=[L],S14=[H],S13=[L],S12=[H],S11=[L],S10=[L],S9=[L],S8=[L]となります。また、スワロ・カウンタの設定値、A=49ですが、これを2進数表記(7ビット分)で表すと、0110001になります。従って、S7=[L],S6=[H],S5=[H],S4=[L],S3=[L],S2=[L],S1=[H]となります。最後のコントロールビットは、C=[L]です。
(2)M=128のとき
図5より、SW=[L]にします。
次に、リファレンス・カウンタの設定値、R=1280ですが、同様にしてこれを2進数表記(14ビット分)で表すと、00010100000000になります。
1は[H]、0は[L]に対応しますから、それぞれ、S14=[L],S13=[L],S12=[L],S11=[H],S10=[L],S9=[H],S8=[L],S7=[L],S6=[L],S5=[L],S4=[L],S3=[L],S2=[L],S1=[L]となります。最後のコントロールビットは、C=[H]です。
一方、プログラマブル・カウンタの設定値、N=424ですが、これを2進数表記(11ビット分)で表すと、00110101000になります。
従って、図6より、S18=[L],S17=[L],S16=[H],S15=[H],S14=[L],S13=[H],S12=[L],S11=[H],S10=[L],S9=[L],S8=[L]となります。また、スワロ・カウンタの設定値、A=49ですが、同様にしてこれを2進数表記(7ビット分)で表すと、0110001になります。従って、S7=[L],S6=[H],S5=[H],S4=[L],S3=[L],S2=[L],S1=[H]となります。最後のコントロールビットは、C=[L]です。
シリアルデータの入力タイミングについて
シリアルデータ入力は、Data端子,Clock端子,LE端子の3入力で行います。図7(a)は、基準分周器(プリスケーラ及びリファレンス・カウンタ)の設定タイミングチャート、図7(b)は、比較分周器(プログラマブル・カウンタ及びスワロ・カウンタ)の設定タイミングチャートを示します。両者の設定の違いは、コントロールビット(C)が[H]か[L]で決められることです。
図7(a)(b)に示すように、シリアルデータは、Clockの立ち上がりで内部のシフトレジスタに順次取り込まれ、ロードイネーブル信号LEが[H]レベル(またはオープン)時にコントロールデータとの組み合わせにより設定されます。すなわち、LE信号が[H]レベルになった段階で設定が変更されます。適当なDataやClockが入力された場合でも、LEが[L]であれば設定は変更されません。したがって、PLL回路がいくつかあったときに、Data信号線とClock信号線を共有することも可能です。このことは、マイコンの制御信号の本数を節約するちょっとしたノウハウにもなります。
![]() |
図7(a).プリスケーラ及びリファレンス・カウンタ設定時のタイミングチャート |
![]() |
図7(b).プログラマブル・カウンタ及びスワロ・カウンタ設定時のタイミングチャート |
PLL周辺の回路構成について
図4の端子配列図、及び表1の端子機能を参照して、PLL周辺の回路構成を考えてみましょう。最も簡単な接続は図8のようになると思います。
![]() |
図8.PLL周辺の回路構成(1) 基本的な構成 |
MB1501の1ピン(OSCin)と2ピン(OSCout)に基準発振器となる水晶発振子を取り付けます。C1とC2は水晶発振子により決定されますが、数十pF程度のコンデンサが付いていれば大抵は発振します。
3ピン(Vp)、4ピン(Vcc)は、電源端子で通常+5V電源に接続します。ピンの近くには、0.1μFのパスコン(セラミックコンデンサ)をつけてください。
5ピン(Do)は内部チャージポンプの出力端子で、ループフィルタに接続します。なお、フィルタの回路構成内容は後ほど掲載します。6ピンはGND端子です。
7ピン(LD)は、位相比較器の出力端子で、PLLが動作している(しっかりロックしている)ときには[H]レベルを出力します。この端子は動作確認程度にとどめ、通常はどこにも接続しません。
8ピン(fin)は、プリスケーラの入力端子です。VCOのOUTPUT端子と1000pF程度のコンデンサを介して接続します。
9ピン(Clock)はクロック入力端子、10ピン(Data)はシリアルデータ入力端子です。それぞれ47kΩ程度の抵抗でプルダウンしてください。また、11ピン(LE)はロードイネーブル信号入力端子です。このピンはプルアップ抵抗が内蔵されていますので、この端子には抵抗をつける必要はありません。
12ピン(FC)は、位相比較器のフェイズ切り替え端子です。このピンの機能についてもう少し詳しく説明します。図9を見てください。VCOのチューニング電圧によって、VCO出力周波数が上昇する場合の特性(1)と、下降する場合の特性(2)があります。FC端子で極性の異なるVCOの種類に対応できるようにします。大半のVCOは、チューニングにバリキャップ(可変容量コンデンサ)を使用しますので、VCO極性は(1)です。このとき、FC端子は通常オープンにします。
![]() |
図9.VCO極性とFC設定について |
13ピン(fr)、及び14ピン(fp)は位相比較器の入力モニタ端子で、この端子は動作確認程度にとどめ、通常はどこにも接続しません。
15ピン(φP)、及び16ピン(φR)は外付けチャージポンプ用位相比較器の出力端子となっています。5ピン(Do)内部チャージポンプ出力端子を使用しますので、通常はこれらの端子はどこにも接続しません。FC端子入力と位相特性の関係について、表5にまとめておきます。
FC:[H](又はオープン) | FC:[L] | |||||
Do | φR | φP | Do | φR | φP | |
fr>fp | H | L | L | L | H | Z |
fr<fp | L | H | Z | H | L | L |
fr=fp | Z | L | Z | Z | L | Z |
(注)fr:基準分周器の出力周波数, fp:比較分周器の出力周波数
Z:ハイインピーダンス状態を示す
ループフィルタの回路構成によっては、内部チャージポンプの電流供給不足になり、うまくロックしない場合には、図10のようにトランジスタで外付け回路を構成します。このとき、内部チャージポンプ出力端子の5ピン(Do)はオープンにします。
![]() |
図10.PLL周辺の回路構成(2) 外付けチャージポンプを使用した構成 |
ループフィルタの回路構成について
ループフィルタは図11のように、ローパスフィルタが使われているので、ただ単にローパスフィルタと呼んでいる場合があります。先ほどから、チャージポンプという言葉が使われていますが、これはループフィルタのコンデンサのチャージをアップやダウンさせるのでこの名があります。
さて、VCOを動かす制御信号は直流ですから、位相比較器とVCOの間に挿入されるループフィルタの役目は、
です。
このループフィルタの保持機能だけを考えて時定数を大きくするならば、入力の早い変化に追従できなくなるばかりでなく、ロックが外れてPLLとしての機能を失ってしまいます。ロック時には、アップやダウンはしないので、回路が切り離されたのと同様になり、ループフィルタ回路のコンデンサの保持機能だけに依存するので、低雑音化が可能になります。このようにループフィルタは、PLL全体の性能に大きく影響を与えます。
![]() |
図11.ループフィルタ回路の種類 |
ループフィルタの種類は(a)ラグフィルタ,(b)リードラグフィルタ,(c)アクティブフィルタなどで多くはありません。
さて、Mini−Circuits社製POSシリーズのVCOのチューニング電圧範囲ですが、推奨範囲で1V〜16V(動作範囲は、約0V〜約20V)必要です。PLLのICは大抵+5Vで動作するように作られています(+5V以下で動作するVCOなら問題ありませんが・・・)。電源電圧を上げようにもMB1501の電源電圧は仕様から、+8V(Max)が限界です。そうなると、位相比較器からの信号を拡大(増幅)できるアクティブフィルタを使うことになりなります。図12にループフィルタのレベルシフト構成例を示します。R1,R2,Cでループフィルタ定数を構成しています。
![]() |
図12.アクティブフィルタによるレベルシフト構成例 |
ループフィルタの構成を調べてみると、当時からアクティブフィルタがやはり主流だったようです。VCOをコントロールするのに制御電圧の幅をかなり広く必要とするのに対して、PLL回路の位相比較器からの信号はICの種類によっても違いますが、昔はせいぜい1.5Vから良くて2Vくらいだったようです。これでは、当時の常識からするとVCOの可変幅はほとんど取れません。そこで、位相比較器からの信号を拡大(増幅)して、いっぱいの変化に変えてVCOをコントロールしていたのです。実は、PLL回路が難しい一番の原因は、この位相比較器の出力を拡大するところにあります。PLLの参考書があまりにも理論に偏っているのか知りませんが、回路の複雑な素晴らしい(?)アクティブフィルタの構成が重宝されてきたのかもしれません。
簡単で安定したPLL回路を作るコツとしては、アクティブフィルタは使わず、ラグリードフィルタを使うようにお勧めします。ラグフィルタや、ラグリードフィルタとか言ってカッコつけていますが、本質は単なる平滑回路なんです。50Hz/60Hzの電源周波数を整流するときに使う平滑回路と比べれば、リップルは10kHzなんですから簡単な構成でできるはずです。重要なことは、位相比較器からの信号でダイレクトにVCOを制御してやることです。
そうすると、ループフィルタの出力は5V以上にはなりません。しかし、ここがSPECTRUMのノウハウです!!。ループフィルタに下駄を履かせてあげるのです。図13に検討したレベルシフト構成を示します。
![]() |
図13.SPECTRUMで検討したレベルシフト構成例 |
ループフィルタの構成はラグリードフィルタです。バッファアンプ(OP1)は入力リーク電流が小さいFET入力のOPアンプであればOKです。リークが大きいとループフィルタの保持機能の働きが弱くなります。さて、Vaが注目の下駄を履かせる部分です。OP2でループフィルタの信号と加算するという方式です。
それでは、次ページ以降に、秘伝のPLL設計テクニックをご紹介していきましょう。
![]() |
![]() |
![]() |